# Università degli Studi di Trento
# Facoltà di Scienze MM.FF.NN.
# Corso di Laurea Triennale in Informatica
# A.A. 2011/2012
# Progetto per il corso di Sistemi Operativi 1
# Progetto 3: 
# Autori:
# Bertoldi Lorenzo 155863
# Cattin Cosso Manuel 146607
# Parrello Nicola 145610


# compilatore utilizzato
CC = gcc

# consente di inserire le informazioni di debug e correlati
ALLOW_DEBUG = -O0 -Wall -g

# opzioni per il compilatore presenti ad ogni istruzione del Makefile
# CFLAGS = -c $(ALLOW_DEBUG) $(ALLOW_PTHREADS)
CFLAGS = -c $(ALLOW_PTHREADS)

# l'istruzione per compilare ogni file prende il compilatore e i flags
COMPILE = $(CC) $(CFLAGS)

# l'insieme di file oggetto di tutto il progetto
OBJS = threadFiglio.o threadPadre.o main.o listaThread.o 

# il file header comune a tutti i file
COMMON_HEADER = definizioni.h


cmd : $(OBJS)
	$(CC) $(ALLOW_PTHREADS) $(OBJS) -o cmd

threadFiglio.o : threadFiglio.c threadFiglio.h  $(COMMON_HEADER)
	   $(COMPILE) threadFiglio.c

listaThread.o : listaThread.c listaThread.h threadFiglio.h $(COMMON_HEADER)
	  $(COMPILE) listaThread.c

threadPadre.o : threadPadre.c threadPadre.h threadFiglio.h listaThread.h $(COMMON_HEADER)
	$(COMPILE) threadPadre.c

main.o : main.c listaThread.h threadPadre.h  $(COMMON_HEADER)
	 $(COMPILE) main.c



# PHONY indica che 'clean', 'all' e 'remake' sono target che non producono file
.PHONY: clean all remake

# elimina i file oggetto creati nella compilazione, i files temporanei e l'eseguibile './cmd'
clean :
	-rm -f *.o *~ cmd

all : cmd

# consente di effettuare una clean per poi ricostruire da zero l'eseguibile './cmd'
remake : clean cmd



